import java.util.*;

public class Answer2 {
    // 腐烂的苹果
    // https://www.nowcoder.com/practice/54ab9865ce7a45968b126d6968a77f34?tpId=196&tqId=40529&ru=/exam/oj
    static int[] dx={0,0,1,-1};
    static int[] dy={1,-1,0,0};
    public static void main(String[] args) {
        ArrayList<ArrayList<Integer>> grid=new ArrayList<>();
        ArrayList<Integer> l1=new ArrayList<>();
        l1.add(2);
        l1.add(1);
        l1.add(1);
        ArrayList<Integer> l2=new ArrayList<>();
        l2.add(1);
        l2.add(0);
        l2.add(1);
        ArrayList<Integer> l3=new ArrayList<>();
        l3.add(1);
        l3.add(1);
        l3.add(1);
        grid.add(l1);
        grid.add(l2);
        grid.add(l3);
        System.out.println(rotApple(grid));
    }
    public static int rotApple (ArrayList<ArrayList<Integer>> grid) {
        // write code here
        int n = grid.size();
        int m = grid.get(0).size();
        boolean[][] dp = new boolean[n][m];

        Queue<int[]> queue = new LinkedList<>();
        // 将腐烂的苹果位置记录下来
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (grid.get(i).get(j) == 2) {
                    queue.add(new int[] {i, j});
                    dp[i][j]=true;
                }
            }
        }

        int ret = 0;
        while (!queue.isEmpty()) {
            int size = queue.size();
            while (size-- != 0) {
                int[] p = queue.poll();
                for (int i = 0; i < 4; i++) {
                    int a = p[0] + dx[i];
                    int b = p[1] + dy[i];
                    if (a >= 0 && a < n && b >= 0 && b < m && !dp[a][b] && grid.get(a).get(b) == 1) {
                        dp[a][b] = true;
                        queue.add(new int[]{a,b});
                    }
                }
            }
            ret++;
        }
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < m; j++) {
                if (grid.get(i).get(j) == 1&& !dp[i][j]) {
                    return -1;
                }
            }
        }
        return ret - 1;
    }
}
